﻿using System.Windows.Input;
using Redbrick.Silverlight;
using Redbrick.Silverlight.Common;
using System;

namespace Moria
{
    public static class Commands
    {

        private static Lazy<DelegateCommand> _newGame = new Lazy<DelegateCommand>(() => new DelegateCommand());
        private static Lazy<DelegateCommand> _saveGame = new Lazy<DelegateCommand>(() => new DelegateCommand());
        private static Lazy<DelegateCommand> _viewScores = new Lazy<DelegateCommand>(() => new DelegateCommand());
        private static Lazy<DelegateCommand> _restoreGame = new Lazy<DelegateCommand>(() => new DelegateCommand());

        private static Lazy<DelegateCommand> _moveLeft = new Lazy<DelegateCommand>(() => new DelegateCommand());
        private static Lazy<DelegateCommand> _moveRight = new Lazy<DelegateCommand>(() => new DelegateCommand());
        private static Lazy<DelegateCommand> _moveUp = new Lazy<DelegateCommand>(() => new DelegateCommand());
        private static Lazy<DelegateCommand> _moveDown = new Lazy<DelegateCommand>(() => new DelegateCommand());


        public static DelegateCommand NewGame { get { return _newGame.Value; } }
        public static DelegateCommand SaveGame { get { return _saveGame.Value; } }
        public static DelegateCommand ViewScores { get { return _viewScores.Value; } }
        public static DelegateCommand RestoreGame { get { return _restoreGame.Value; } }

        public static DelegateCommand MoveNorth { get { return _moveUp.Value; } }
        public static DelegateCommand MoveSouth { get { return _moveDown.Value; } }
        public static DelegateCommand MoveWest { get { return _moveLeft.Value; } }
        public static DelegateCommand MoveEast { get { return _moveRight.Value; } }


    }
}
